package com.yidu.t299.controller.twj;

import com.yidu.t299.contant.SystemCode;
import com.yidu.t299.domain.twj.UserInfo;
import com.yidu.t299.service.twj.SysUserBiz;
import com.yidu.t299.utils.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpSession;

/**
 * @author twj
 * @version 1.0.0
 */

@RestController
public class LoginController {
    @Autowired
    private SysUserBiz sysUserBiz;

    /**
     * 登录接口
     * 调用Service中的login方法
     * 如果返回值为null，表示用户的用户名或密码错误
     * 如果返回值不为null
     * 1.将用户信息UserInfo对象存放在HttpSession中
     * 2.返回登陆成功的结果（可以将用户信息发送到前端）
     *
     * 注意：
     * 登录通常为了密码的安全，采用post请求
     */
    @PostMapping("auth/login")
    public Result login(@RequestBody UserInfo userInfo, HttpSession session) {
        UserInfo dbUserInfo = sysUserBiz.login(userInfo.getUsrName(), userInfo.getUsrPassword());
        if (dbUserInfo != null) {
            session.setAttribute("userInfo", dbUserInfo);
            return Result.success(dbUserInfo);
        }
        return Result.error(SystemCode.USERNAME_ERROR.getCode(), SystemCode.USERNAME_ERROR.getMessage(), null);
    }

    /**
     * 登出接口
     */
    @GetMapping("auth/logout")
    public Result logout(HttpSession session) {
        session.removeAttribute("userInfo");
        session.invalidate();
        return Result.success();
    }
}
